[bubble] メールアドレス重複でのサインアップエラー回避できるのか [ソーシャル接続]
以前API Connectorを使ってAuth0でアプリにログインできるようにしました(https://dev.classmethod.jp/articles/login-bubble-webapp-with-auth0/)
emailとpasswordでログインしていましたが、ソーシャル接続(google)を追加してログインを行ったところ、Bubbleアプリの方でこのアドレスは既に使われています
というエラーが出てログインできませんでした。
パスワードログインした時のメールアドレスとGoogleログインした時のメールアドレスが同じなのでこのエラーになったと思われます。
End-users of a Bubble app must have unique email addresses
とドキュメントにも記載がありました
ユーザーがBubbleにサインアップした場合、データベース(User
)にデータが作成されいます。
ここのemailが重複しているのでデータを作成できないということだと思われます。
ソーシャルログインとパスワード両方を対応したいとき、このままでは不都合なのでなんとか回避する方法がないか考えてみました。
前提
BubbleのFreeプラン
を用いています。有料プランで回避できる方法があるかもしれませんが調べていません。
案:Api Connectorの設定(User email key path)を変更する
User email key path
はもともとemailにしています。
これはAuth0の/userinfo
から返ってくるkeyのemailを利用しているからです。
この部分を他のユニークなもの(sub
)に変えてあげればどうなるのか試してみました。
この設定でdebug_mode=true
でログインしてみると(Googleログイン)
DataにはAuth0のsubの値が格納され、Bubbleアプリでもログイン可能となりました。
※ ログインした時の映像
この設定にした後も、BubbleのUser TypeにもEmailアドレスを保存しておくのであれば、ログイン時のworkflowでMake changes to thing
を使って保存してあげることもできます。
- stepに
Make changes to thing
Thing to change
にcurrent user
Change another field
に追加したいfield名を設定する- 例)
real_email = Auth0 API - API Call's email
- 例)
こんな感じで保存されるようになります。
最後に
UserのEmailに保存する値をユニークなものに変更することで同じメールアドレスを持つユーザーをログインするようにしてみました。
本記事ではsub
というkeyを使いましたが、もちろんAuth0側でユニークな値を独自で作成してUser profileに組み込んで使うこともありだと思います。
注意点としては、もともとEmailアドレスを保存すると想定している箇所に別の値を入れたので、
BubbleアプリやPluginで不都合なことが起こる可能性があります。
最終的にはAuth0のUser Account Linking を使って同じメールアドレスのユーザーを一人として扱うようにする方が良くなると思います。